package com.server.common.logistics.jc.create;

import com.google.gson.annotations.SerializedName;
import com.server.common.logistics.request.LogisticsRequest;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Getter
@Setter
public class JCCreateOrderRequest extends LogisticsRequest {


    @SerializedName("battery_type")
    private String batteryType;
    @SerializedName("buyerid")
    private String buyerid;
    @SerializedName("cargo_type")
    private String cargoType;
    @SerializedName("checkin_ip")
    private String checkinIp;

    /**
     * 收货人地址
     * @author LXC
     * @date 2022-09-20 16:18
     */
    @SerializedName("consignee_address")
    private String consigneeAddress;

    /**
     * 收货人城市
     * @author LXC
     * @date 2022-09-20 16:18
     */
    @SerializedName("consignee_city")
    private String consigneeCity;

    /**
     * 收货人公司
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_companyname")
    private String consigneeCompanyname;

    /**
     * 收货人门编号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_doorno")
    private String consigneeDoorno;

    /**
     * 收货人邮箱
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_email")
    private String consigneeEmail;

    /**
     * 收货人手机号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_mobile")
    private String consigneeMobile;

    /**
     * 收货人名字
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_name")
    private String consigneeName;

    /**
     * 收货人护照号码
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_passportno")
    private String consigneePassportno;

    /**
     * 收货人通行证序列号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_passportserialnumber")
    private String consigneePassportserialnumber;

    /**
     * 收货人邮政编码
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_postcode")
    private String consigneePostcode;

    /**
     * 收货人状态
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_state")
    private String consigneeState;

    /**
     * 收货人街道编号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_streetno")
    private String consigneeStreetno;

    /**
     * 收货人郊区
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_suburb")
    private String consigneeSuburb;

    /**
     * 收货人税号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_taxno")
    private String consigneeTaxno;

    /**
     * 收货人税号分类类型
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_taxnotype")
    private String consigneeTaxnotype;

    /**
     * 收货人电话号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("consignee_telephone")
    private String consigneeTelephone;

    /**
     * 国家
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("country")
    private String country;

    /**
     * 客户ID
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("customer_id")
    private String customerId;

    /**
     * 客户用户ID
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("customer_userid")
    private String customerUserid;

    /**
     * 海关清关
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("customs_clearance")
    private String customsClearance;

    /**
     * 关税声明
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("customs_declaration")
    private String customsDeclaration;

    /**
     * 关税帐户
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("duty_account")
    private String dutyAccount;

    /**
     * 关税类型
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("duty_type")
    private String dutyType;

    /**
     * 进口商地址
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_address")
    private String importAddress;

    /**
     * 进口商地址2
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_address2")
    private String importAddress2;

    /**
     * 进口商地址3
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_address3")
    private String importAddress3;

    /**
     * 进口商城市
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_city")
    private String importCity;

    /**
     * 进口商代码
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_code")
    private String importCode;

    /**
     * 进口商公司名
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_companyname")
    private String importCompanyname;

    /**
     * 进口商国家
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_country")
    private String importCountry;

    /**
     * 进口商邮箱
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_email")
    private String importEmail;

    /**
     * 进口商名字
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_name")
    private String importName;

    /**
     * 进口商邮箱
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_postcode")
    private String importPostcode;

    /**
     * 进口商状态
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_state")
    private String importState;

    /**
     * 进口商电话号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("import_telephone")
    private String importTelephone;

    /**
     * 选填；用于DHL/FEDEX运费；或用于白关申报（订单实际金额，特殊渠道使用）；或其他用途
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_cargoamount")
    private String orderCargoamount;

    /**
     * cod金额
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_codamount")
    private String orderCodamount;

    /**
     * cod币种
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_codcurrency")
    private String orderCodcurrency;

    /**
     * 原单号，必填
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_customerinvoicecode")
    private String orderCustomerinvoicecode;

    /**
     * 自定义信息
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_customnote")
    private String orderCustomnote;

    /**
     * 保险金额
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_insurance")
    private String orderInsurance;

    /**
     * 件数，小包默认1，快递需真实填写
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_piece")
    private String orderPiece;

    /**
     * 退回标志，默认N表示不退回，Y标表示退回。中邮可以忽略该属性
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_returnsign")
    private String orderReturnsign;

    /**
     * 产品销售地址
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("order_transactionurl")
    private String orderTransactionurl;

    /**
     * 运输方式ID，必填
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("product_id")
    private String productId;

    /**
     * 图片地址，多图片地址用分号隔开
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("product_imagepath")
    private String productImagepath;

    /**
     * 发件人地址1
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_address1")
    private String shipperAddress1;

    /**
     * 发件人地址2
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_address2")
    private String shipperAddress2;

    /**
     * 发件人地址3
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_address3")
    private String shipperAddress3;

    /**
     * 发件人城市
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_city")
    private String shipperCity;

    /**
     * 发件人公司
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_companyname")
    private String shipperCompanyname;

    /**
     * 发件人国家
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_country")
    private String shipperCountry;

    /**
     * 发件人邮箱
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_email")
    private String shipperEmail;

    /**
     * 发件人名字
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_name")
    private String shipperName;

    /**
     * 发件人地护照号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_passportno")
    private String shipperPassportno;

    /**
     * 发件人邮编
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_postcode")
    private String shipperPostcode;

    /**
     * 发件人状态
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_state")
    private String shipperState;

    /**
     * 发件人郊区
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_suburb")
    private String shipperSuburb;

    /**
     * 发件人税号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_taxno")
    private String shipperTaxno;

    /**
     * 发件人税务国
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_taxnocountry")
    private String shipperTaxnocountry;

    /**
     * 发件人税号类型
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_taxnotype")
    private String shipperTaxnotype;

    /**
     * 发件人电话号
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("shipper_telephone")
    private String shipperTelephone;

    /**
     * 存储代码
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("store_code")
    private String storeCode;

    /**
     * 存储名字
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("store_name")
    private String storeName;

    /**
     * 销售条款代码
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("termsofsale_code")
    private String termsofsaleCode;

    /**
     * 贸易类型
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("trade_type")
    private String tradeType;

    /**
     * 增值税代码
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("vat_code")
    private String vatCode;

    /**
     * 增值税注册地址
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("vat_register_address")
    private String vatRegisterAddress;

    /**
     * 增值税注册名称
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("vat_register_name")
    private String vatRegisterName;

    /**
     * 总重，选填，如果sku上有单重可不填该项
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("weight")
    private String weight;

    /**
     * 订单发票参
     * @author LXC
     * @date 2022-09-20 16:20
     */
    @SerializedName("orderInvoiceParam")
    private List<OrderInvoiceParam> orderInvoiceParamList = new ArrayList<>();



    @Getter
    @Setter
    public static class OrderInvoiceParam implements Serializable {

        /**
         * api_sku :
         * battery_type :
         * box_no :
         * has_battery :
         * has_magnet :
         * hs_code : 7010902000
         * invoice_amount : 2
         * invoice_attribute1 :
         * invoice_attribute2 :
         * invoice_brand :
         * invoice_currency : USD
         * invoice_imgurl :
         * invoice_material :
         * invoice_netweight :
         * invoice_pcs : 1
         * invoice_purpose :
         * invoice_rule :
         * invoice_selling_price :
         * invoice_taxno :
         * invoice_title : Glass bottle
         * invoice_weight : 0.753
         * invoiceunit_code :
         * item_id :
         * item_transactionid :
         * origin_country :
         * sku : 玻璃瓶*5;*1;
         * sku_code : 玻璃瓶*5;*1;
         * transaction_url :
         */

        @SerializedName("api_sku")
        private String apiSku;
        @SerializedName("battery_type")
        private String batteryType;
        @SerializedName("box_no")
        private String boxNo;
        @SerializedName("has_battery")
        private String hasBattery;
        @SerializedName("has_magnet")
        private String hasMagnet;
        @SerializedName("hs_code")
        private String hsCode;
        @SerializedName("invoice_amount")
        private BigDecimal invoiceAmount;
        @SerializedName("invoice_attribute1")
        private String invoiceAttribute1;
        @SerializedName("invoice_attribute2")
        private String invoiceAttribute2;
        @SerializedName("invoice_brand")
        private String invoiceBrand;
        @SerializedName("invoice_currency")
        private String invoiceCurrency;
        @SerializedName("invoice_imgurl")
        private String invoiceImgurl;
        @SerializedName("invoice_material")
        private String invoiceMaterial;
        @SerializedName("invoice_netweight")
        private String invoiceNetweight;
        @SerializedName("invoice_pcs")
        private Integer invoicePcs;
        @SerializedName("invoice_purpose")
        private String invoicePurpose;
        @SerializedName("invoice_rule")
        private String invoiceRule;
        @SerializedName("invoice_selling_price")
        private String invoiceSellingPrice;
        @SerializedName("invoice_taxno")
        private String invoiceTaxno;
        @SerializedName("invoice_title")
        private String invoiceTitle;
        @SerializedName("invoice_weight")
        private BigDecimal invoiceWeight;
        @SerializedName("invoiceunit_code")
        private String invoiceunitCode;
        @SerializedName("item_id")
        private String itemId;
        @SerializedName("item_transactionid")
        private String itemTransactionid;
        @SerializedName("origin_country")
        private String originCountry;
        @SerializedName("sku")
        private String sku;
        @SerializedName("sku_code")
        private String skuCode;
        @SerializedName("transaction_url")
        private String transactionUrl;
    }

}
